iT邦幫忙

0

Day 29|TaskFlow 專案整理與部署前準備

c#
  • 分享至 

  • xImage
  •  

今日學習目標

  • 認識 Development、Staging、Production 環境
  • 了解 appsettings.json 的用途
  • 學會從設定檔讀取程式設定
  • 確認敏感資料不會放進 Git
  • 使用 dotnet build 與 dotnet test 檢查專案
  • 使用 dotnet publish 建立發布資料夾
  • 在本機測試已發布的程式
  • 使用 Git 保存 Day 29 的修改

認識 Development、Staging、Production

ASP.NET Core 可以根據不同環境,使用不同的程式設定。
https://ithelp.ithome.com.tw/upload/images/20261025/201844302Dp17YqHvO.png
Development:

  • 方便查看詳細錯誤訊息。
  • 可以啟用 Swagger UI。
  • 使用開發專用設定。
    Production:
  • 不應向使用者顯示程式內部錯誤細節。
  • 應使用 HTTPS。
  • 密碼與敏感資料應安全保存。
  • 需要適當的日誌、權限控管與備份策略。

認識 appsettings.json

appsettings.json 是 ASP.NET Core 常見的設定檔。
打開 appsettings.json
在 VS Code 左側找到:TaskFlow3.Api → appsettings.json
新增 TaskFlow 設定

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "TaskFlow": {
    "AppName": "TaskFlow 任務管理系統",
    "Version": "1.0"
  }
}

在 Program.cs 讀取設定

開啟 Program.csTaskFlow3.Api → Program.cs

using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using TaskFlow3.Api.Data;
using TaskFlow3.Api.Services;

var builder = WebApplication.CreateBuilder(args);

// OpenAPI
builder.Services.AddOpenApi();

// Controller
builder.Services.AddControllers();

// 原本的任務 Service
builder.Services.AddScoped<ITaskService, TaskService>();

// 原本的 TaskFlow 資料庫
string dbPath = Path.Combine(
    builder.Environment.ContentRootPath,
    "taskflow-ef.db"
);

builder.Services.AddDbContext<TaskFlowDbContext>(options =>
    options.UseSqlite($"Data Source={dbPath}")
);

// 今天新增的登入資料庫
string authDbPath = Path.Combine(
    builder.Environment.ContentRootPath,
    "taskflow-auth.db"
);

builder.Services.AddDbContext<AuthDbContext>(options =>
    options.UseSqlite($"Data Source={authDbPath}")
);

// Identity
builder.Services.AddAuthorization();

builder.Services.AddIdentityApiEndpoints<IdentityUser>()
    .AddEntityFrameworkStores<AuthDbContext>();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.MapOpenApi();

    app.UseSwaggerUI(options =>
    {
        options.SwaggerEndpoint("/openapi/v1.json", "v1");
    });
}

app.UseHttpsRedirection();

app.UseAuthentication();
app.UseAuthorization();

app.MapControllers();

// 註冊與登入路由
app.MapGroup("/auth").MapIdentityApi<IdentityUser>();

// 原本的伺服器測試
app.MapGet("/test", () => "伺服器正常運作!");

app.MapGet("/app-info", (IConfiguration config) =>
{
    string appName =
        config["TaskFlow:AppName"] ?? "TaskFlow";

    string version =
        config["TaskFlow:Version"] ?? "1.0";

    return Results.Ok(new
    {
        appName,
        version
    });
});

// 需要登入的 API
app.MapGet("/api/my-account", (
    System.Security.Claims.ClaimsPrincipal user) =>
{
    return Results.Ok(new
    {
        message = "登入驗證成功!",
        userName = user.Identity?.Name
    });
})
.RequireAuthorization();

app.Run();

執行程式在 VS Code 終端機輸入:cd TaskFlow3.Api
接著:dotnet run
https://ithelp.ithome.com.tw/upload/images/20261025/20184430IFb3uIGJjO.png

認識 dotnet publish

dotnet publish 是 .NET 提供的發布指令。
https://ithelp.ithome.com.tw/upload/images/20261026/201844302oXulYNSIC.png

實作 dotnet publish

進入 TaskFlow3 根目錄
在 VS Code 終端機輸入:cd TaskFlow3
發布 TaskFlow API
執行:dotnet publish .\TaskFlow3.Api\TaskFlow3.Api.csproj -c Release -o .\publish
查看發布資料夾
在 VS Code 左側應該會多出:TaskFlow3.Api.dll、TaskFlow3.Api.runtimeconfig.json、appsettings.json

在本機執行發布版本

進入發布資料夾:cd TaskFlow3\publish
設定本機測試環境在同一個 PowerShell 終端機輸入:

$env:DOTNET_ENVIRONMENT = "Production"
$env:ASPNETCORE_ENVIRONMENT = "Production"

啟動發布版本執行:dotnet .\TaskFlow3.Api.dll --urls "http://127.0.0.1:5400"
開啟瀏覽器測試在瀏覽器輸入:http://127.0.0.1:5400/app-info

使用 Git 保存 Day 29 的成果

回到專案根目錄cd TaskFlow3
查看修改內容git status
加入檔案git add .
接著:git status
建立版本紀錄git commit -m "Day 29: Prepare TaskFlow for deployment"
最後查看:git log --oneline


*提醒邦友,使用第三方服務/API 時,請務必評估資安風險與隱私保護
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言